package com.lcc.book.demos.web.intercepter;

import com.lcc.book.demos.web.Model.UserInfo;
import com.lcc.book.demos.web.constant.Constants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Component
//实现登录拦截器
@Slf4j
public class LoginIntercepter implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("登录拦截器校验......");
        HttpSession session = request.getSession(false);//默认参数是true,表示没有session就创建session
        if(session != null && session.getAttribute(Constants.SESSION_USER_KEY) != null){
            UserInfo userInfo = (UserInfo) session.getAttribute(Constants.SESSION_USER_KEY);
            if(userInfo != null || userInfo.getId() >= 0){
                return true;
            }
        }
        response.setStatus(401);//401表示未认证登录
        return false;//返回true表示放行，返回false表示拦截
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.info("目标方法执行后");
    }
}
